package com.sunny.example;

import java.util.*;

/**
 * 字符串排序
 * 描述
 * 给定 n 个字符串，请对 n 个字符串按照字典序排列。
 * <p>
 * 数据范围： 1≤n≤1000 1 \le n \le 1000 \ 1≤n≤1000  ，字符串长度满足 1≤len≤100 1 \le len \le 100 \ 1≤len≤100
 * 输入描述：
 * 输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
 * 输出描述：
 * 数据输出n行，输出结果为按照字典序排列的字符串。
 */
public class HJ14 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        if (num > 0) {
            List<String> values = new LinkedList<>();
            while (num > 0) {
                String word = scanner.nextLine();
                if (null == word || "".equals(word) || !word.matches("^[a-zA-Z]*")) {
                    continue;
                }
                values.add(word);
                num--;
            }

            //开启排序
            values.sort(new Comparator<String>() {
                @Override
                public int compare(String o1, String o2) {
                    int i = 0;
                    while (i < o1.length() && i < o2.length()) {
                        int first = o1.charAt(i);
                        int second = o2.charAt(i);
                        int delta = first - second;
                        if (delta > 0) {
                            return 1;
                        }
                        if (delta < 0) {
                            return -1;
                        }

                        i++;
                    }

                    if (o1.length() == o2.length()) {
                        return 0;
                    }

                    return o1.length() > o2.length() ? 1 : -1;

                }
            });

            for (String str : values) {
                System.out.println(str);
            }


        }
    }
}
